package com.xmindguoguo.boot.util;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import lombok.extern.slf4j.Slf4j;

/**
 * 类型转换工具类
 * 
 * @ClassName ConvertUtil
 * @author <a href="892042158@qq.com" target="_blank">于国帅</a>
 * @date 2019年1月5日 上午9:55:20
 *
 */
@Slf4j
public class ConvertUtil {
    public static final String UTF8 = "utf-8";

    /**
     * String 转变成Array
     * 
     * @Title StringToLongArray
     * @author 于国帅
     * @date 2018年12月23日 下午3:35:47
     * @param ids
     * @return Long[]
     */
    public static Long[] StringToLongArray(String ids) {
        return StringToLongArray(ids, ",");
    }

    public static Long[] StringToLongArray(String ids, String separatorChars) {
        if (StringUtils.isNotEmpty(ids) && StringUtils.isNotEmpty(separatorChars)) {
            String[] strArray = StringUtils.split(ids, separatorChars);
            Long[] longArray = new Long[strArray.length];
            for (int i = 0; i < strArray.length; i++) {
                longArray[i] = objTolong(strArray[i]);
            }
            return longArray;
        }
        return new Long[] {};
    }

    public static List<Long> StringToLongList(String ids) {
        return Arrays.asList(StringToLongArray(ids, ","));
    }

    public static List<Long> StringToLongList(String ids, String separatorChars) {
        return Arrays.asList(StringToLongArray(ids, separatorChars));
    }

    /**
     * 
     * Object转换成Long类型
     * 
     * @Title obj2long
     * @param obj
     *            Object
     * @return long
     */
    public static long objTolong(Object obj) {
        if (obj != null) {
            try {
                return Long.parseLong(obj.toString());
            } catch (NumberFormatException e) {
                log.error("", e);
            }
        }
        return 0;
    }

    /**
     * 
     * Object转换成Long类型
     * 
     * @Title obj2long
     * @param obj
     *            Object
     * @return long
     */
    public static String objToString(Object obj) {
        if (obj != null) {
            try {
                if (obj instanceof byte[]) {
                    return new String((byte[]) obj, UTF8);
                }
                return String.valueOf(obj);
            } catch (Exception e) {
                log.error("objToString:", e);
            }
        }
        return null;
    }

    public static byte[] StringToByteArray(String str) {
        if (StringUtils.isNotBlank(str)) {
            try {
                return str.getBytes(UTF8);
            } catch (UnsupportedEncodingException e) {
                log.error("StringToByteArray:", e);
            }
        }
        return null;
    }

}
